Vector-radix FFT Algorithm
   HOME

TheInfoList



OR:

The vector-radix FFT algorithm, is a multidimensional
fast Fourier transform A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). Fourier analysis converts a signal from its original domain (often time or space) to a representation in th ...
(FFT) algorithm, which is a generalization of the ordinary
Cooley–Tukey FFT algorithm The Cooley–Tukey algorithm, named after J. W. Cooley and John Tukey, is the most common fast Fourier transform (FFT) algorithm. It re-expresses the discrete Fourier transform (DFT) of an arbitrary composite size N = N_1N_2 in terms of ''N''1 ...
that divides the transform dimensions by arbitrary radices. It breaks a multidimensional (MD)
discrete Fourier transform In mathematics, the discrete Fourier transform (DFT) converts a finite sequence of equally-spaced samples of a function into a same-length sequence of equally-spaced samples of the discrete-time Fourier transform (DTFT), which is a complex- ...
(DFT) down into successively smaller MD DFTs until, ultimately, only trivial MD DFTs need to be evaluated. The most common multidimensional
FFT A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). Fourier analysis converts a signal from its original domain (often time or space) to a representation in the ...
algorithm is the row-column algorithm, which means transforming the array first in one index and then in the other, see more in
FFT A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). Fourier analysis converts a signal from its original domain (often time or space) to a representation in the ...
. Then a radix-2 direct 2-D FFT has been developed, and it can eliminate 25% of the multiplies as compared to the conventional row-column approach. And this algorithm has been extended to rectangular arrays and arbitrary radices, which is the general vector-radix algorithm. Vector-radix FFT algorithm can reduce the number of complex multiplications significantly, compared to row-vector algorithm. For example, for a N^M element matrix (M dimensions, and size N on each dimension), the number of complex multiples of vector-radix FFT algorithm for radix-2 is \frac N^M \log_2 N, meanwhile, for row-column algorithm, it is \frac 2 \log_2 N. And generally, even larger savings in multiplies are obtained when this algorithm is operated on larger radices and on higher dimensional arrays. Overall, the vector-radix algorithm significantly reduces the structural complexity of the traditional DFT having a better indexing scheme, at the expense of a slight increase in arithmetic operations. So this algorithm is widely used for many applications in engineering, science, and mathematics, for example, implementations in image processing, and high speed FFT processor designing.


2-D DIT case

As with
Cooley–Tukey FFT algorithm The Cooley–Tukey algorithm, named after J. W. Cooley and John Tukey, is the most common fast Fourier transform (FFT) algorithm. It re-expresses the discrete Fourier transform (DFT) of an arbitrary composite size N = N_1N_2 in terms of ''N''1 ...
, two dimensional vector-radix FFT is derived by decomposing the regular 2-D DFT into sums of smaller DFT's multiplied by "twiddle" factor. A decimation-in-time (DIT) algorithm means the decomposition is based on time domain x, see more in
Cooley–Tukey FFT algorithm The Cooley–Tukey algorithm, named after J. W. Cooley and John Tukey, is the most common fast Fourier transform (FFT) algorithm. It re-expresses the discrete Fourier transform (DFT) of an arbitrary composite size N = N_1N_2 in terms of ''N''1 ...
. We suppose the 2-D DFT :X(k_1,k_2) = \sum_^ \sum_^ x _1, n_2\cdot W_^ W_^, where k_1 = 0,\dots,N_1-1,and k_2 = 0,\dots,N_2-1, and x _1, n_2/math> is a N_1 \times N_2 matrix, and W_N = \exp(-j 2\pi /N). For simplicity, let us assume that N_1=N_2=N, and radix-(r\times r)(N/r are integers). Using the change of variables: * n_i=rp_i+q_i, where p_i=0,\ldots,(N/r)-1; q_i = 0,\ldots,r-1; * k_i=u_i+v_i N/r, where u_i=0,\ldots,(N/r)-1; v_i = 0,\ldots,r-1; where i = 1 or 2, then the two dimensional DFT can be written as: : X(u_1+v_1 N/r,u_2+v_2 N/r)=\sum_^ \sum_^ \left \sum_^_\sum_^_x[rp_1+q_1,_rp_1+q_1W_^_W_^_\right.html" ;"title="p_1+q_1,_rp_1+q_1.html" ;"title="\sum_^ \sum_^ x[rp_1+q_1, rp_1+q_1">\sum_^ \sum_^ x[rp_1+q_1, rp_1+q_1W_^ W_^ \right">p_1+q_1,_rp_1+q_1.html" ;"title="\sum_^ \sum_^ x[rp_1+q_1, rp_1+q_1">\sum_^ \sum_^ x[rp_1+q_1, rp_1+q_1W_^ W_^ \right\cdot W_N^ W_r^ W_r^, The equation above defines the basic structure of the 2-D DIT radix-(r\times r) "butterfly". (See 1-D "butterfly" in
Cooley–Tukey FFT algorithm The Cooley–Tukey algorithm, named after J. W. Cooley and John Tukey, is the most common fast Fourier transform (FFT) algorithm. It re-expresses the discrete Fourier transform (DFT) of an arbitrary composite size N = N_1N_2 in terms of ''N''1 ...
) When r=2, the equation can be broken into four summations: one over those samples of x for which both n_1 and n_2 are even, one for which n_1 is even and n_2 is odd, one of which n_1 is odd and n_2 is even, and one for which both n_1 and n_2 are odd, and this leads to: : X(k_1,k_2) = S_(k_1,k_2) + S_(k_1,k_2) W_N^ +S_(k_1,k_2) W_N^ + S_(k_1,k_2) W_N^, where S_(k_1,k_2)=\sum_^ \sum_^ x[2 n_1 + i, 2 n_2 + j] \cdot W_^ W_^.


2-D DIF case

Similarly, a decimation-in-frequency (DIF, also called the Sande–Tukey algorithm) algorithm means the decomposition is based on frequency domain X, see more in
Cooley–Tukey FFT algorithm The Cooley–Tukey algorithm, named after J. W. Cooley and John Tukey, is the most common fast Fourier transform (FFT) algorithm. It re-expresses the discrete Fourier transform (DFT) of an arbitrary composite size N = N_1N_2 in terms of ''N''1 ...
. Using the change of variables: * n_i=p_i+q_i N/r, where p_i=0,\ldots,(N/r)-1; q_i = 0,\ldots,r-1; * k_i=r u_i+v_i, where u_i=0,\ldots,(N/r)-1; v_i = 0,\ldots,r-1; where i = 1 or 2, and the DFT equation can be written as: : X(r u_1+v_1,r u_2+v_2)=\sum_^ \sum_^ \left \sum_^_\sum_^_x[p_1+q_1_N/r,_p_1+q_1_N/rW_^_W_^_\right.html" ;"title="_1+q_1_N/r,_p_1+q_1_N/r.html" ;"title="\sum_^ \sum_^ x[p_1+q_1 N/r, p_1+q_1 N/r">\sum_^ \sum_^ x[p_1+q_1 N/r, p_1+q_1 N/rW_^ W_^ \right">_1+q_1_N/r,_p_1+q_1_N/r.html" ;"title="\sum_^ \sum_^ x[p_1+q_1 N/r, p_1+q_1 N/r">\sum_^ \sum_^ x[p_1+q_1 N/r, p_1+q_1 N/rW_^ W_^ \right\cdot W_^ W_^ W_^,


Other approaches

The split-radix FFT algorithm has been proved to be a useful method for 1-D DFT. And this method has been applied to the vector-radix FFT to obtain a split vector-radix FFT. In conventional 2-D vector-radix algorithm, we decompose the indices k_1,k_2 into 4 groups: : \begin X(2 k_1, 2 k_2) & : & \text \\ X(2 k_1, 2 k_2 +1) & : & \text \\ X(2 k_1 +1, 2 k_2) & : & \text \\ X(2 k_1+1, 2 k_2+1) & : & \text \end By the split vector-radix algorithm, the first three groups remain unchanged, the fourth odd-odd group is further decomposed into another four sub-groups, and seven groups in total: : \begin X(2 k_1, 2 k_2) & : & \text \\ X(2 k_1, 2 k_2 +1) & : & \text \\ X(2 k_1 +1, 2 k_2) & : & \text \\ X(4 k_1+1, 4 k_2+1) & : & \text \\ X(4 k_1+1, 4 k_2+3) & : & \text \\ X(4 k_1+3, 4 k_2+1) & : & \text \\ X(4 k_1+3, 4 k_2+3) & : & \text \end That means the fourth term in 2-D DIT radix-(2\times 2) equation, S_(k_1,k_2) W_^ becomes: : A_(k_1,k_2) W_N^ + A_(k_1,k_2) W_N^ +A_(k_1,k_2) W_N^ + A_(k_1,k_2) W_N^, where A_(k_1,k_2)=\sum_^ \sum_^ x n_1 + i, 4 n_2 + j\cdot W_^ W_^ The 2-D N by N DFT is then obtained by successive use of the above decomposition, up to the last stage. It has been shown that the split vector radix algorithm has saved about 30% of the complex multiplications and about the same number of the complex additions for typical 1024\times 1024 array, compared with the vector-radix algorithm.


References

{{reflist, 30em FFT algorithms Digital signal processing Discrete transforms